10 REM NOLUXE CHARACTER EDITER 20 REM LUDO DECOCK 30 REM LINDENSTRAAT 26 40 REM 8840 GITS 50 REM BELGIUM 60 DIMTE$(36):L=48:Z=1144:GOSUB1200:LE=1 70 POKE53280,0:POKE53281,0:SYS58692:POKE646,5:PRINTCHR$(142)CHR$(9):POKE53269,0 80 PRINT" [164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]" 90 PRINT"  NOLUXE CHARACTER EDITOR " 100 PRINT"  BY FLOSSOFTWARE (C)1987 " 110 INPUT"LOAD CHARACTER SET Y/N (E=END) ";JN$ 120 IFJN$="Y"THEN1080 130 IFJN$="E"THENPRINTCHR$(147)CHR$(8):END 140 PRINT"HOW BIG ARE THE CHARACTERS (X*Y < 256) ?" 150 POKE19,1:INPUT"- X-VALUE (< 21) :";B:POKE19,0:PRINT 160 POKE19,1:INPUT"- Y-VALUE (< 30) :";H:POKE19,0:PRINT 170 IFB*H>255ORB>29ORH>20THEN70 180 REM SCREEN--------------------------- 190 PRINT"[147]";:FORY=0TOH-1:FORX=(1144+(Y*40))TO(1144+B+(Y*40))-1 200 POKEX+54272,6:POKEX,207:NEXTX,Y 210 PRINT"[129] [164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]" 220 PRINT"  NOLUXE CHARACTER EDITOR " 230 PRINT" [152] BY FLOSSOFTWARE (C)1987 " 240 R=4:K=30:GOSUB400:PRINT"[158] F1 [146] [153]MODE" 250 R=6:K=30:GOSUB400:PRINT"[158] F2 [146] [153]SAVE" 260 R=8:K=30:GOSUB400:PRINT"[158] F4 [146] [153]SHOW" 270 R=10:K=30:GOSUB400:PRINT"[158] F6 [146] [153]DISK" 280 R=12:K=30:GOSUB400:PRINT"[158] F8 [146] [153]RUN" 290 R=14:K=30:GOSUB400:PRINT"[158] - [146]" 300 R=15:K=35:GOSUB400:PRINT"[153]PAGE" 310 R=16:K=30:GOSUB400:PRINT"[158] + [146]" 320 R=17:K=37:GOSUB400:PRINT"[153][169][223]" 330 R=18:K=30:GOSUB400:PRINT"[158]CRSR [146] [153][169][146][186][204][223]" 340 R=19:K=36:GOSUB400:PRINT"[223][208][207][169]" 350 R=20:K=37:GOSUB400:PRINT"[223][169]" 360 R=22:K=30:GOSUB400:PRINT"[156]CHR$" 370 R=22:K=34:GOSUB400:PRINT"[150]";L 380 R=24:K=33:GOSUB400:PRINT"[154]";CHR$(L);"":POKE53269,1 390 GOTO420 400 POKE214,R:POKE211,K:SYS58640:RETURN 410 REM BUTTON ? ------------------------ 420 GETA$:IFA$=""THEN420 430 A=ASC(A$) 440 REM CURSOR MOVE --------------------- 450 IFA<>17ANDA<>29ANDA<>145ANDA<>157THEN580 460 IFA<>145THEN490 470 IFPEEK(53249)=74THEN420 480 GOSUB1160:POKE53249,PEEK(53249)-8:PV=PV-40:GOTO420 490 IFA<>17THEN520 500 IFPEEK(53249)=74+((H-1)*8)THEN420 510 GOSUB1160:POKE53249,PEEK(53249)+8:PV=PV+40:GOTO420 520 IFA<>157THEN550 530 IFPEEK(53248)=24THEN420 540 GOSUB1160:POKE53248,PEEK(53248)-8:PV=PV-1:GOTO420 550 IFPEEK(53248)=24+((B-1)*8)THEN420 560 GOSUB1160:POKE53248,PEEK(53248)+8:PV=PV+1:GOTO420 570 REM MODE ---------------------------- 580 IFA<>133THEN630 590 IFPK=0THENPK=11:POKE53280,PK:GOTO420 600 IFPK=11THENPK=15:POKE53280,PK:GOTO420 610 IFPK=15THENPK=0:POKE53280,PK:GOTO420 620 REM NEXT CHARACTER ------------------ 630 IFA<>43THEN680 640 IFL=90THEN420 650 IFL=57THENL=65:LE=LE+1:GOTO370 660 L=L+1:LE=LE+1:GOTO370 670 REM PREVIOUS CHARACTER -------------- 680 IFA<>45THEN730 690 IFL=48THEN420 700 IFL=65THENL=57:LE=LE-1:GOTO370 710 L=L-1:LE=LE-1:GOTO370 720 REM CHARACTER IN MEMORY ------------- 730 IFA<>137THEN810 740 TE$(LE)="":POKE53280,2:POKE53269,0:FORS=ZTOZ+B:SO=0 750 FORSS=STOS+(H*40)STEP40:SO=PEEK(SS)+SO:NEXTSS 760 IFSO=207*H+32THENNEXTS:PK=0:SO=0:POKE53269,1:GOTO420 770 FORSS=STOS+(H*40)STEP40:SO=PEEK(SS):IFSO=160THENTE$(LE)=TE$(LE)+"1":NEXTSS 780 IFSO=207THENTE$(LE)=TE$(LE)+"0":NEXTSS 790 NEXTS:POKE53280,0:POKE53269,1:PK=0:SO=0:GOTO420 800 REM CHARACTER TO SCREEN ------------- 810 IFA<>138THEN920 820 POKE53280,4:POKE53269,0:U=0:Q=0 830 FORY=0TOH-1:FORX=(1144+(Y*40))TO(1144+B+(Y*40))-1:POKEX+54272,6:POKEX,207:NEXTX,Y 840 IFTE$(LE)=""THEN900 850 FORS=1TOLEN(TE$(LE)):U=U+1:IFU>HTHENU=1:Q=Q+1 860 SS=Z+Q+((U-1)*40) 870 IFMID$(TE$(LE),S,1)="1"THENPOKESS,160:POKESS+54272,5:GOTO890 880 IFMID$(TE$(LE),S,1)="0"THENPOKESS,207 890 NEXTS 900 POKE53280,0:POKE53269,1:PK=0:Q=0:U=0:GOTO420 910 REM NEW START ----------------------- 920 IFA<>140THEN980 930 K=0:R=24:GOSUB400:PRINT"R[146]UN/G[146]O ON" 940 GETKE$:IFKE$<>"R"ANDKE$<>"G"THEN940 950 IFKE$="G"THENK=0:R=24:GOSUB400:PRINT" ":GOTO420 960 RUN 970 REM SAVE TO DISK -------------------- 980 IFA<>139THEN1140 990 K=0:R=24:GOSUB400:PRINT"S[146]AVE/G[146]O ON" 1000 GETKE$:IFKE$<>"S"ANDKE$<>"G"THEN1000 1010 IFKE$="G"THENK=0:R=24:GOSUB400:PRINT" ":GOTO420 1020 POKE53269,0 1030 PRINT"[147][152]SAVE":POKE19,1:INPUT"FILENAME: ";FI$:IFLEN(FI$)>13THENPRINT:GOTO1030 1040 FI$="K."+LEFT$(FI$,LEN(FI$)):POKE19,0:OPEN2,8,2,FI$+",S,W" 1050 PRINT#2,B:PRINT#2,H:FORF=1TO36:IFTE$(F)=""THENTE$(F)="2" 1060 PRINT#2,LEN(TE$(F)):PRINT#2,TE$(F):NEXTF:CLOSE2:GOTO190 1070 REM LOAD FROM DISK ----------------- 1080 PRINT"[147][152]LOAD":POKE19,1:INPUT"FILENAME : ";FI$:IFLEN(FI$)>13THENPRINT:GOTO1080 1090 FI$="K."+LEFT$(FI$,LEN(FI$)):POKE19,0:OPEN15,8,15:OPEN2,8,2,FI$+",S,R" 1100 INPUT#15,EN:IFEN>19THENCLOSE2:CLOSE15:GOTO1080 1110 INPUT#2,B:INPUT#2,H:FORF=1TO36:TE$(F)="":INPUT#2,LE 1120 FORI=1TOLE:GET#2,X$:TE$(F)=TE$(F)+X$:NEXTI:GET#2,X$:NEXTF:CLOSE2:CLOSE15 1130 L=48:LE=1:GOTO190 1140 GOTO420 1150 REM POKE COLOR & CHARACTER --------- 1160 IFPK=11THENPOKEPV+1144,160:POKEPV+55416,5 1170 IFPK=15THENPOKEPV+1144,207:POKEPV+55416,6 1180 RETURN 1190 REM SPRITE ------------------------- 1200 POKE2040,15:FORI=0TO62:READQ:POKE960+I,Q:NEXTI 1210 POKE53248,24:POKE53249,74:POKE53287,1 1220 DATA255,192,0,255,192,0,192,192,0,192,192,0,192,192,0,192,192,0,192,192,0 1230 DATA192,192,0,255,192,0,255,192,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 1240 RETURN